package com.scvtc.utils;

import org.jasypt.encryption.StringEncryptor;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @Description: 对 jasypt 进行简单封装
 * @Author: yiFei
 * @date: 2022/6/20 17:55
 */
@Component
public class JasyptEncryptorUtil {

    @Autowired
    private StringEncryptor stringEncryptor;

    /**
     * 简单的加密方式 （ 用于对项目多个指标加密 ）
     *
     * @param strings
     */
    public void SimpleEncrypt(@NotNull String... strings) {
        // 循环加密
        for (String string : strings) {
            System.out.println("加密前: [\t" + string + "\t]\t" + " 加密后: [\tENC(" + stringEncryptor.encrypt(string) + ")\t]");
        }
    }

    /**
     * 简单的解密方式 (仅用于测试)
     *
     * @param strings
     */
    protected void SimpleDecrypt(@NotNull String... strings) {
        // 循环加密
        for (String string : strings) {
            System.out.println("解密 : [\t" + stringEncryptor.decrypt(string) + "\t]");
        }
    }

    /**
     * 加盐加密
     */
    public String SimpleSlatEncrypt(@NotNull String code, String slat) {
        return encrypt(code + slat);
    }

    /**
     * 加盐解密
     */
    public String SimpleSlatDecrypt(String slat, @NotNull String code) {
        return decrypt(code).replace(slat, "");
    }

    /**
     * 加盐加密
     */
    public String encrypt(@NotNull String code) {
        return stringEncryptor.encrypt(code);
    }

    /**
     * 解密
     */
    public String decrypt(@NotNull String code) {
        return stringEncryptor.decrypt(code);
    }



}
